export default {
    env: {
        browser: true,
        Node: true,
        es6: true,
    },
    parser: '@typescript-eslint/parser',
    parserOptions: {
        ecmaVersion: 'latest',
        sourceType: 'module',
        jsxPragma: 'React',
        ecmaFeatures: {
            jsx: true,
        },
        project: './tsconfig.*?.json',
        createDefaultProgram: false,
    },
    plugins: ['@typescript-eslint', 'import', 'simple-import-sort'],
    extends: [
        'eslint:recommended',
        'plugin:@typescript-eslint/recommended',
        'plugin:prettier/recommended',
    ],
    rules: {
        // 关闭未使用的变量检测
        'no-unused-vars': 'off',
        // 关闭在case语句中变量声明的检测
        'no-case-declarations': 'off',
        // 关闭变量在定义之前使用的检测
        'no-use-before-define': 'off',
        // 关闭函数括号之前空格的检测
        'space-before-function-paren': 'off',
        // 导入语句排序规则
        'simple-import-sort/imports': [
            'error',
            {
                groups: [
                    // react放在首行
                    ['^react', '^@?\\w'],
                    // 内部导入
                    ['^(@|components)(/.*|$)'],
                    // 父级导入. 把 `..` 放在最后.
                    ['^\\.\\.(?!/?$)', '^\\.\\./?$'],
                    // 同级导入. 把同一个文件夹.放在最后
                    ['^\\./(?=.*/)(?!/?$)', '^\\.(?!/?$)', '^\\./?$'],
                    // 样式导入.
                    ['^.+\\.?(css)$'],
                    // 带有副作用导入，比如import 'a.css'这种.
                    ['^\\u0000'],
                ],
            }
        ],
        'simple-import-sort/exports': 'error',//导出
        // 确保import语句在文件顶部
        'import/first': 'error',
        // 在import语句后添加新行
        'import/newline-after-import': 'error',
        // 禁止重复的import语句
        'import/no-duplicates': 'error',
        //  对未使用的变量进行错误提示，可忽略以下划线开头的变量
        '@typescript-eslint/no-unused-vars': [
            'error',
            {
                argsIgnorePattern: '^_',
                varsIgnorePattern: '^_',
            }
        ],
        // 关闭禁止使用ts- ignore的规则
        '@typescript-eslint/ban-ts-ignore': 'off',
        // 关闭禁止使用ts-comment的规则
        '@typescript-eslint/ban-ts-comment': 'off',
        // 关闭对特定类型名称的禁用规则
        '@typescript-eslint/ban-types': 'off',
        // 关闭显式函数返回类型规则
        "@typescript-eslint/explicit-function-return-type": "off",
        // 关闭对any类型的检测
        '@typescript-eslint/no-explicit-any': 'off',
        // 关闭对var requires的检测
        '@typescript-eslint/no-var-requires': 'off',
        // 关闭对空函数的检测
        '@typescript-eslint/no-empty-function': 'off',
        // 关闭变量在定义之前使用的检测
        '@typescript-eslint/no-use-before-define': 'off',
        // 关闭非空断言的检测
        '@typescript-eslint/no-non-null-assertion': 'off',
        // 关闭显式模块边界类型的规则
        '@typescript-eslint/explicit-module-boundary-types': 'off',
    },
    globals: { defineOptions: 'readonly' }
}